﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
using System.Text.RegularExpressions;

namespace Ucb.Workshop.Business.Util
{
    public static class UtilControl
    {
        static string _texto;
        static int _numero;
        static float _numeroDecimal;

        static public float NumeroDecimal
        {
            get { return _numeroDecimal; }
            set { _numeroDecimal = value; }
        }

        static public int Numero
        {
            get { return _numero; }
            set { _numero = value; }
        }

        static public string Texto
        {
            get { return _texto; }
            set { _texto = value; }
        }

        // Metodo que valida un campo TextBox y guarda su valor en un parametro
        static public bool ValidarTextBox(TextBox TextBox)
        {
            if (Util.EsVacio(TextBox.Text))
            {
                TextBox.BackColor = Color.Red;
                return false;
            }
            else
            {
                TextBox.BackColor = Color.White;
                Texto = Util.Cadena;
                return true;
            }
        }

        // Metodo para validar un TextBox con mascara numerica
        static public bool ValidarMasketTextBox(MaskedTextBox MtextBox)
        {
            if (Util.EsNumero(MtextBox.Text))
            {
                MtextBox.BackColor = Color.White;
                Numero = Util.Numero;
                return true;
            }
            else
            {
                MtextBox.BackColor = Color.Red;
                return false;
            }
        }

        // Metodo para validar un textBox para numero decimal
        static public bool ValidarTextBoxDecimal(TextBox TextBox)
        {
            if (Util.ESNumeroDecimal(TextBox.Text))
            {
                TextBox.BackColor = Color.White;
                NumeroDecimal = Util.NumeroDecimal;
                return true;
            }
            else
            {
                TextBox.BackColor = Color.Red;
                return false;
            }
        }

        static public bool ValidarTextBoxEntero(TextBox TextBox)
        {
            if (Util.EsNumero(TextBox.Text))
            {
                TextBox.BackColor = Color.White;
                Numero = Util.Numero;
                return true;
            }
            else
            {
                TextBox.BackColor = Color.Red;
                return false;
            }
        }

        // Metodo que verifica q solo sean numeros decimales
        static public void EscribirDecimal(TextBox TextBox)
        {
            try
            {
                float n = float.Parse(TextBox.Text.Trim());
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
                if (TextBox.Text.Trim().Length > 0)
                {
                    TextBox.Text = TextBox.Text.Trim().Substring(0, TextBox.Text.Length - 1);
                }
            }
        }
        // Metodo que establece el valor del combo box ademas de fijar el selector 
        static public void SetComboBox(ComboBox ComboBox, string Opcion)
        {
            ComboBox.SelectedItem = Opcion.Trim();
        }

        static public void EsEntero(TextBox TextBox)
        {
            Regex enteroRegex = new Regex("[^0-9]");
            // verificamos si no es numero, quitamos el caracter
            if (enteroRegex.IsMatch(TextBox.Text))
            {
                TextBox.Text = TextBox.Text.Substring(0, TextBox.Text.Length - 1);
                TextBox.Select(TextBox.Text.Length, 0);
            }
        }

        static public void EsDecimal(TextBox TextBox)
        {
            try
            {
                double numDecimal = float.Parse(TextBox.Text.Trim());

            }

             // verificamos si no es numero, quitamos el caracter
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
                if (TextBox.Text.Trim().Length > 0)
                {
                    TextBox.Text = TextBox.Text.Substring(0, TextBox.Text.Length - 1);
                    TextBox.Select(TextBox.Text.Length, 0);
                }
                else
                {
                    TextBox.Text = "";
                    TextBox.Select(TextBox.Text.Length, 0);
                }
            }
        }
        public static bool ValidateTelephone(string number)
        {
            string caracteresvalidos = "1234567890- ";
            for (int i = 0; i < number.Length; i++)
            {
                // ¿Es un caracter no-válido?
                if (caracteresvalidos.IndexOf(number[i]) < 0)
                    return (false);
            }
            if (number.IndexOf('0') == 0)
                return (false);

            if (number.IndexOf(' ') == 0)
                return (false); // si el primer caracter es un espacio retorna falso
            if (Math.Abs(number.IndexOf(' ') - number.LastIndexOf(' ')) == 1)
                return (false); // controla q no existan dos espacios juntos
            if (number.Length > 7 && number.Length >= 15)
                return (false);
            return true;

        }
        public static bool ValidateEmail(string text)
        {
            string caracteresvalidos = " ABCDEFGHIJKLMNOPQRSTUVWXYZÑabcdefghijklmnñopqrstuvwxyz1234567890áéíóúÁÉÍÓÚ_-.@#";
            for (int i = 0; i < text.Length; i++)
            {
                // ¿Es un caracter no-válido?
                if (caracteresvalidos.IndexOf(text[i]) < 0)
                    return (false);
            }
            if (text.IndexOf(' ') == 0)
                return (false); // si el primer caracter es un espacio retorna falso
            if (Math.Abs(text.IndexOf(' ') - text.LastIndexOf(' ')) == 1)
                return (false); // controla q no existan dos espacios juntos
            return true;
        }
        public static bool ValidateAddress(string text)
        {
            string caracteresvalidos = " ABCDEFGHIJKLMNOPQRSTUVWXYZÑabcdefghijklmnñopqrstuvwxyz1234567890áéíóúÁÉÍÓÚ_-.@#";
            for (int i = 0; i < text.Length; i++)
            {
                // ¿Es un caracter no-válido?
                if (caracteresvalidos.IndexOf(text[i]) < 0)
                    return (false);
            }
            if (text.IndexOf(' ') == 0)
                return (false); // si el primer caracter es un espacio retorna falso
            if (Math.Abs(text.IndexOf(' ') - text.LastIndexOf(' ')) == 1)
                return (false); // controla q no existan dos espacios juntos
            return true;
        }
        public static bool ValidateText(string text)
        {
            int cantEspacios = 0;
            string caracteresvalidos = " ABCDEFGHIJKLMNOPQRSTUVWXYZÑabcdefghijklmnñopqrstuvwxyzáéíóúÁÉÍÓÚ";
            for (int i = 0; i < text.Length; i++)
            {
                // ¿Es un caracter no-válido?
                if (caracteresvalidos.IndexOf(text[i]) < 0)
                {
                    return (false);
                }
                if (text[i] == ' ')
                {
                    cantEspacios++;
                }
            }
            if (cantEspacios > 4)
                return (false); // Hay más de 1 espacio
            if (text.IndexOf(' ') == 0)
                return (false); // si el primer caracter es un espacio retorna falso
            if (Math.Abs(text.IndexOf(' ') - text.LastIndexOf(' ')) == 1)
                return (false); // controla q no existan dos espacios juntos
            return true;
        }











    }
}
